/**
 * 给定一个整数数组temperatures，表示每天的温度，返回一个数组answer，其中answer[i]是指对于第 i 天，下一个更高温度出现在几天后。如果气温在这之后都不会升高，请在该位置用 0 来代替。
 *
 *

 * 链接：https://leetcode.cn/problems/daily-temperatures
 */
class DailyTemperatures {
    public int[] dailyTemperatures(int[] temperatures) {
        int len=temperatures.length;
        Stack<Integer> stack=new Stack<>();
        int[] ret=new int[len];
        for(int i=len-1;i>=0;i--) {
            while(!stack.isEmpty()&&temperatures[stack.peek()]<=temperatures[i]) {
                stack.pop();
            }
            ret[i]= stack.isEmpty()? 0: (stack.peek()-i);
            stack.push(i);
        }
        return ret;
    }
}